// 判空处理 参数可以是数组或对象
export const isEmpty = (obj) => {
    // 参数为字符串时
    if ((obj + '').trim() === "undefined" || (obj + '').trim() === "null" || (obj + '').trim() === "" || (obj + '').trim() === 'NaN') {
        return true
    }
    // 参数为对象时 且不能空对象
    if (!obj || !typeof obj === "object") return true;

    const keys = Object.keys(obj);
    for (var key of keys) {
        const val = obj[key];

        if ((val + '').trim() === "undefined" || (val + '').trim() === "null" || (val + '').trim() === "" || (val + '').trim() === 'NaN') {
            // 如属性值为null或undefined或''或NaN 都表示为空
            return true
        } else if (typeof val === "object") {
            if (Object.keys(obj[key]).length === 0) {
                // 如属性值为空数组、空对象 也表示为空
                return true
            }
            // 属性值为对象，递归调用
            isEmpty(obj[key]);
        }
    }
    return false;
}

export function formatDate(format = "Y-M-D h:m:s", timestamp = Date.now()) {
    let date = new Date(timestamp);
    let dateInfo = {
        Y: date.getFullYear(),
        M: date.getMonth() + 1,
        D: date.getDate(),
        h: date.getHours(),
        m: date.getMinutes(),
        s: date.getSeconds(),
    };
    let formatNumber = (n) => (n >= 10 ? n : "0" + n);
    let res = format
        .replace("Y", dateInfo.Y)
        .replace("M", formatNumber(dateInfo.M))
        .replace("D", formatNumber(dateInfo.D))
        .replace("h", formatNumber(dateInfo.h))
        .replace("m", formatNumber(dateInfo.m))
        .replace("s", formatNumber(dateInfo.s));
    return res;
}

// 删除对象中属性值为 null、undefined、""、NaN字段 排除 0、false
export function removeField(obj) {
    const keyArr = Object.keys(obj);

    if (keyArr.length === 0) {
        return obj;
    }

    keyArr.forEach(k => {
        if ((obj[k] + '').trim() === "undefined" || (obj[k] + '').trim() === "null" || (obj[k] + '').trim() === '' || (obj[k] + '').trim() === 'NaN')
            delete obj[k];
    });
    return obj;
}


// 去除数组中属性值为 null、undefined、""、NaN字段 排除 0、false
export function notempty(originArr) {
    var tempArr = [];
    originArr.map(function(val) {
        //过滤规则为，不为空串、不为null、不为undefined，也可自行修改
        if (['undefined', '', 'null', 'NaN'].includes((val + '').trim()) === false) {
            tempArr.push(val);
        }
    });
    return tempArr;
}

// 中国标准时间格式【Tue Apr 13 2021 00:00:00 GMT+0800 (中国标准时间)】转为时间戳
export function standardDateToTimstamp(standarddate) {
    console.log(standarddate);
    return standarddate ? parseInt(+new Date(standarddate)) : '';
}




// 参数1: 原对象数据
// 参数2: 从原对象选出需要的字段名
// 参数3: 原字段名修改后的字段名
// 参数4: 选出来的原字段名不存在时 用该数据占位
export function chooseFields(object, props_l = [], props_c = {}, props_r = {}) {
    let retObj = {};
    let dataArr = Object.keys(object);
    let modeifyArr = Object.keys(props_c);
    // 说明含有需要调整的字段名
    if (Object.keys(props_c).length > 0) {
        props_l.forEach((item, index) => {
            if (dataArr.includes(item) === true) {
                if (modeifyArr.includes(item)) {
                    retObj[props_c[item]] =
                        typeof object[item] === "object" && object[item] != null ?
                        JSON.parse(JSON.stringify(object[item])) :
                        object[item];
                } else {
                    retObj[item] =
                        typeof object[item] === "object" && object[item] != null ?
                        JSON.parse(JSON.stringify(object[item])) :
                        object[item];
                }
            } else {
                // 返回数据缺少需要的字段, 设置默认值
                if (modeifyArr.includes(item)) {
                    retObj[props_c[item]] = props_r[props_c[item]];
                } else {
                    retObj[item] = props_r[item];
                }
            }
        });
    } else {
        // 说明没有需要调整的字段名
        props_l.forEach((item, index) => {
            if (dataArr.includes(item) === true) {
                retObj[item] =
                    typeof object[item] === "object" && object[item] != null ?
                    JSON.parse(JSON.stringify(object[item])) :
                    object[item];
            } else {
                // 返回数据缺少需要的字段, 设置默认值
                retObj[item] = props_r[item];
            }
        });
    }
    return retObj;
}